1. Field of the Invention
The present invention generally relates to graphics processing and more specifically to rasterizing multiple primitives in parallel while preserving the order of the primitives.
2. Description of the Related Art
Conventional graphics processors have processed primitives at a rate of up to one triangle per clock while maintaining the applications programming interface (API) specified primitive order. Graphics primitives, such as triangles are received in an ordered stream for processing. The DirectX and OpenGL APIs require that the primitive order be maintained, that is to say, the primitives must be rendered in the order presented by the application program. This requirement ensures that intersecting primitives will be rendered deterministically to avoid the introduction of visual artifacts. Additionally, the primitive order must be maintained since the results of rendering a later primitive may be dependent on the state of the frame buffer resulting from rendering an earlier primitive, particularly when blending is used.
While many graphics processors have used parallelism to increase processing throughput, systems capable of rendering more than one triangle per clock while processing from a single API input stream typically do not maintain primitive ordering at full speed.
Accordingly, what is needed in the art is a system and method for exceeding a triangle per clock while maintaining API primitive ordering.